-- @Author: baidwwy
-- @Date:   2018-04-10 22:48:47
-- @Last Modified by:   baidwwy
-- @Last Modified time: 2018-05-20 06:47:19

local __astar = require "astar"


local Astar = class()

function Astar:初始化(宽度,高度,指针,长度)
    self.as     = __astar(宽度,高度,指针,长度)
end
--@返回 返回指定坐标的状态
function Astar:取状态(x,y)
    return self.as:CheckPoint(x,y)
end
--@说明 设置指定坐标的状态
function Astar:置状态(x,y,v)
    self.as:SetPoint(x,y,v)
end
function Astar:置障碍(x,y)
    self.as:SetPoint(x,y,true)
end
function Astar:是否障碍(x,y)
    return self.as:CheckPoint(x,y)
end
function Astar:是否通行(x,y)
    return not self.as:CheckPoint(x,y)
end
function Astar:置模式(v)--true = 4方向
    self.m = v and 4 or 0
    return self
end
--[[
起始,终点,模式(如果4方向)
返回数组{{x=0,y=0}}
数组[1] 是下一点
]]
function Astar:取路径(x,y,x1,y1,m)
    self.p = self.as:GetPath(x,y,x1,y1,m or self.m)
    self.r = false
    return self.p
end
--[[
把起点和终点反转
返回数组{{x=0,y=0}}
数组[#数组] 是下一点
]]
function Astar:反向取路径(x,y,x1,y1,m)
    self.p = self.as:GetPath(x1,y1,x,y,m or self.m)
    self.r = true
    return self.p
end
function Astar:下一点()
    if self.p and #self.p>0 then
        if self.r then
            return table.remove(self.p, #self.p)
        end
        return table.remove(self.p, 1)
    end
end
return Astar